A state of a device can vary. For instance, a network may be unavailable due to a device being out of range of a wireless access point. Similarly, a network connection may be limited due to the network hardware being used and the type of network a device is connected to. Performance levels may also fluctuate throughout device usage, for example, due to background processes or other activities. Often, a user is not aware of the state of the device, and whether it will affect the performance or functionality of an application, until after the user attempts to execute the application.